package grafo;

public class Grupo {
	private Grupo padre;
	private int profundidad;
	
	public Grupo(){
		padre = null;
		profundidad = 0;
	}
	
	public Grupo dameGrupo(){
		if (padre == null)
			return this;
		return padre = padre.dameGrupo();
	}
	
	public void union(Grupo g){
		int prof1 = g.dameGrupo().getProfundidad();
		int prof2 = dameGrupo().getProfundidad();
		if (prof1 < prof2) 
			g.dameGrupo().padre = dameGrupo();
		else if(prof1 > prof2)
			dameGrupo().padre = g.dameGrupo();
		else{
			if(prof1 == 1){
			dameGrupo().padre = g.dameGrupo();
			padre = g.dameGrupo();
			}
			else{
				dameGrupo().padre = g.dameGrupo();
				g.dameGrupo().setProfundidad(1);
			}
		}
	
	}

	public Grupo getPadre() {
		return padre;
	}

	public void setPadre(Grupo p) {
		padre = p;
	}

	public int getProfundidad() {
		return profundidad;
	}

	public void setProfundidad(int p) {
		profundidad = p;
	}
}
